Classical database systems store textual content in simple string columns. With such arrangements, searching can only be performed for sequences of characters and speed of execution is moderate. For the most state-of-the-art databases, it is also possible to create additional full-text indexes on string columns. That is, the text is split into words, and a positional inverted index is created on these words. Using the index, it is possible to search for phrases (sequences of words), and it is also possible to answer Boolean queries on a word level. However, this approach has two major drawbacks. First, large parts of the data must be stored twice (as string data and within the inverted index). Second, searching for substrings (sequences of characters) is comparatively slow because such searching is performed on raw data.